home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Freeware / Griffith 0.9.8 / griffith-0.9.8-win32.exe / {app} / lib / people.py < prev    next >
Text File  |  2008-11-17  |  5KB  |  127 lines

  1. # -*- coding: UTF-8 -*-
  2.  
  3. __revision__ = '$Id: people.py 1040 2008-11-15 21:13:49Z mikej06 $'
  4.  
  5. # Copyright (c) 2005-2008 Vasco Nunes, Piotr O┼╝arowski
  6. #
  7. # This program is free software; you can redistribute it and/or modify
  8. # it under the terms of the GNU General Public License as published by
  9. # the Free Software Foundation; either version 2 of the License, or
  10. # (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. # GNU Library General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License
  18. # along with this program; if not, write to the Free Software
  19. # 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
  20.  
  21. # You may use and distribute this software under the terms of the
  22. # GNU General Public License, version 2 or later
  23.  
  24. import gutils
  25.  
  26. def show_people_window(self):
  27.     self.widgets['people']['window'].show()
  28.  
  29. def hide_people_window(self):
  30.     self.widgets['people']['window'].hide()
  31.  
  32. def add_person(self):
  33.     clear_person(self)
  34.     self.widgets['person']['window'].show()
  35.  
  36. def add_person_cancel(self):
  37.     self.widgets['person']['window'].hide()
  38.     self.widgets['people']['window'].present()
  39.  
  40. def clear_person(self):
  41.     self.widgets['person']['name'].set_text("")
  42.     self.widgets['person']['email'].set_text("")
  43.     self.widgets['person']['phone'].set_text("")
  44.  
  45. def add_person_db(self):
  46.     if self.widgets['person']['name'].get_text().decode('utf-8'):
  47.         p = self.db.Person()
  48.         p.name = self.widgets['person']['name'].get_text().decode('utf-8')
  49.         p.email = self.widgets['person']['email'].get_text().decode('utf-8')
  50.         p.phone = self.widgets['person']['phone'].get_text().decode('utf-8')
  51.         self.widgets['person']['window'].hide()
  52.         if p.add_to_db():
  53.             myiter = self.p_treemodel.insert_after(None, None)
  54.             self.p_treemodel.set_value(myiter,0,str(self.widgets['person']['name'].get_text().decode('utf-8')))
  55.             self.p_treemodel.set_value(myiter,1,str(self.widgets['person']['email'].get_text().decode('utf-8')))
  56.         self.widgets['people']['window'].present()
  57.     else:
  58.         gutils.error(self.widgets['results']['window'],_("You should fill the person name"))
  59.  
  60. def edit_person(self):
  61.     try:
  62.         treeselection = self.widgets['people']['treeview'].get_selection()
  63.         (tmp_model, tmp_iter) = treeselection.get_selected()
  64.         name = tmp_model.get_value(tmp_iter,0).decode('utf-8')
  65.     except:
  66.         return
  67.     p = self.db.Person.get_by(name=name)
  68.     if p is not None:
  69.         self.widgets['person']['e_name'].set_text(str(p.name))
  70.         self.widgets['person']['e_email'].set_text(str(p.email))
  71.         self.widgets['person']['e_phone'].set_text(str(p.phone))
  72.         self.widgets['person']['e_id'].set_text(str(p.person_id))
  73.     self.widgets['person']['e_window'].show()
  74.  
  75. def edit_person_cancel(self):
  76.     self.widgets['person']['e_window'].hide()
  77.     self.widgets['people']['window'].present()
  78.  
  79. def update_person(self):
  80.     p = self.db.Person.get_by(person_id=self.widgets['person']['e_id'].get_text().decode('utf-8'))
  81.     if p is None:
  82.         return False
  83.     p.name = self.widgets['person']['e_name'].get_text().decode('utf-8')
  84.     p.email = self.widgets['person']['e_email'].get_text().decode('utf-8')
  85.     p.phone = self.widgets['person']['e_phone'].get_text().decode('utf-8')
  86.     if p.update_in_db():
  87.         self.update_statusbar(_("Record updated"))
  88.         edit_person_cancel(self)
  89.         self.p_treemodel.clear()
  90.         for p in self.db.Person.select(order_by='name ASC'):
  91.             myiter = self.p_treemodel.insert_before(None, None)
  92.             self.p_treemodel.set_value(myiter, 0, str(p.name))
  93.             self.p_treemodel.set_value(myiter, 1, str(p.email))
  94.  
  95. def delete_person(self):
  96.     response = None
  97.     has_history = False
  98.     has_history_msg = ''
  99.     try:
  100.         treeselection = self.widgets['people']['treeview'].get_selection()
  101.         (tmp_model, tmp_iter) = treeselection.get_selected()
  102.         person = tmp_model.get_value(tmp_iter,0).decode('utf-8')
  103.     except:
  104.         return
  105.     person = self.db.Person.get_by(name=person)
  106.     if not person:
  107.         return False
  108.     data = self.db.Loan.select_by(person_id=person.person_id, return_date=None)
  109.     if len(data)>0:
  110.         gutils.info(self, _("This person has loaned films from you. Return them first."), self.widgets['people']['window'])
  111.         return False
  112.     data = self.db.Loan.select_by(person_id=person.person_id)
  113.     if len(data)>0:
  114.         has_history = True
  115.         has_history_msg = _("This person has data in the loan history. This data will be erased if you continue.")
  116.     response = gutils.question(self,_("%s\nAre you sure you want to delete this person?" % has_history_msg), \
  117.         1, self.widgets['people']['window'])
  118.  
  119.     if response == -8:
  120.         treeselection = self.widgets['people']['treeview'].get_selection()
  121.         (tmp_model, tmp_iter) = treeselection.get_selected()
  122.         if person.remove_from_db():
  123.             self.p_treemodel.remove(tmp_iter)
  124.             self.treeview_clicked()
  125.     self.widgets['people']['window'].present()
  126.  
  127.